Skip to content

Conversation

@per1234
Copy link
Contributor

@per1234 per1234 commented Nov 3, 2025

The release workflows use the Gon tool to sign and notarize the macOS builds.

The signing identity of the code signing certificate must be provided to the tool. Previously, this was hardcoded into the workflows. That was not ideal because the workflows are intended to be generally applicable to any project, including 3rd party projects which will have a different signing identity from that of Arduino's certificates.

In addition to posing an inconvenience to hard forks, the previous hardcoding also made it more difficult for community contributors to validate changes to the release system in their fork in preparation for submitting a pull request to Arduino's repository.

In addition to the configuration file that was previously used to configure the identity, Gon supports configuration via environment variables. Environment variables are already used for the other certificate-specific configuration. The reason an environment variable was not done for the identity is simply that Gon did not have support for doing so at the time the notarization system was developed. However, it is supported from version 0.0.28 (Bearer/gon@c3c48ad).

Since this is public information, a repository variable (as opposed to the GitHub Actions secrets mechanism used by the workflow for the non-public data) is used to configure the identity via the repository settings. This will make it possible to run the workflow with any suitable certificate and credentials, without any changes to the workflow code.


Even though it no longer contains any data, it was necessary to leave the empty sign block in the Gon configuration file, as the presence of this block is required by the tool:

❗️ `sign` configuration required with `source` set
When you set the `source` configuration, you must also specify the
`sign` configuration to sign the input files.

…nment variable

The release workflows use the "Gon" tool to sign and notarize the macOS builds.

The signing identity of the code signing certificate must be provided to the tool. Previously, this was hardcoded into
the workflows. That was not ideal because the workflows are intended to be generally applicable to any project,
including 3rd party projects which will have a different signing identity from that of Arduino's certificates.

In addition to posing an inconvenience to hard forks, the previous hardcoding also made it more difficult for community
contributors to validate changes to the release system in their fork in preparation for submitting a pull request to
Arduino's repository.

In addition to the configuration file that was previously used to configure the identity, Gon supports configuration via
environment variables. Environment variables are already used for the other certificate-specific configuration. The
reason an environment variable was not done for the identity is simply that Gon did not have support for doing so at the
time the notarization system was developed. However, it is supported from version 0.0.28.

Since this is public information, a repository variable (as opposed to the GitHub Actions secrets mechanism used by the
workflow for the non-public data) is used to configure the identity via the repository settings. This will make it
possible to run the workflow with any suitable certificate and credentials, without any changes to the workflow code.

---

Even though it no longer contains any data, it was necessary to leave the empty `sign` block in the **Gon**
configuration file, as the presence of this block is required by the tool:

```
❗️ `sign` configuration required with `source` set
When you set the `source` configuration, you must also specify the
`sign` configuration to sign the input files.
```
@per1234 per1234 self-assigned this Nov 3, 2025
@per1234 per1234 added type: enhancement Proposed improvement topic: infrastructure Related to project infrastructure os: macos Specific to macOS operating system labels Nov 3, 2025
@per1234 per1234 merged commit 01eb9ad into arduino:main Nov 3, 2025
8 checks passed
@per1234 per1234 deleted the AC_APPLICATION_IDENTITY branch November 3, 2025 16:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

os: macos Specific to macOS operating system topic: infrastructure Related to project infrastructure type: enhancement Proposed improvement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant